/**
 * 拖拽移动
 * @param  {elementObjct} bar 鼠标点击控制拖拽的元素
 * @param {elementObjct}  target 移动的元素
 * @param {function}  callback 移动后的回调
 */
export function startDrag(bar, target, callback) {
        var params = {
          top: 0,
          left: 0,
          currentX: 0,
          currentY: 0,
          flag: false,
          cWidth: 0,
          cHeight: 0,
          tWidth: 0,
          tHeight: 0
        };
      
        // 给拖动块添加样式
        bar.style.cursor = 'move';
      
        // 获取相关CSS属性
        // o是移动对象
        // var getCss = function (o, key) {
        //   return o.currentStyle ? o.currentStyle[key] : document.defaultView.getComputedStyle(o, false)[key];
        // };
      
        bar.onmousedown = function (event) {
          // 按下时初始化params
          var e = event ? event : window.event;
          params = {
            top: target.offsetTop,
            left: target.offsetLeft,
            currentX: e.clientX,
            currentY: e.clientY,
            flag: true,
            cWidth: document.body.clientWidth,
            cHeight: document.body.clientHeight,
            tWidth: target.offsetWidth,
            tHeight: target.offsetHeight
          };
      
          // 给被拖动块初始化样式
          target.style.margin = 0;
          target.style.top = params.top + 'px';
          target.style.left = params.left + 'px';
      
          if (!event) {
            // 防止IE文字选中
            bar.onselectstart = function () {
              return false;
            }
          }
      
          document.onmousemove = function (event) {
            // 防止文字选中
            window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
      
            var e = event ? event : window.event;
            if (params.flag) {
              var nowX = e.clientX;
              var nowY = e.clientY;
              // 差异距离
              var disX = nowX - params.currentX;
              var disY = nowY - params.currentY;
              // 最终移动位置
              var zLeft = 0;
              var zTop = 0;
      
              zLeft = parseInt(params.left) + disX;
              // 限制X轴范围
              if (zLeft <= -parseInt(params.tWidth / 2)) {
                zLeft = -parseInt(params.tWidth / 2);
              }
              if (zLeft >= params.cWidth - parseInt(params.tWidth * 0.5)) {
                zLeft = params.cWidth - parseInt(params.tWidth * 0.5);
              }
      
              zTop = parseInt(params.top) + disY;
              // 限制Y轴范围
              if (zTop <= 0) {
                zTop = 0;
              }
              if (zTop >= params.cHeight - parseInt(params.tHeight * 0.5)) {
                zTop = params.cHeight - parseInt(params.tHeight * 0.5);
              }
      
              // 执行移动
              target.style.left = zLeft + 'px';
              target.style.top = zTop + 'px';
            }
      
            if (typeof callback == "function") {
              callback(zLeft, zTop);
            }
          }
      
          document.onmouseup = function () {
            params.flag = false;
            document.onmousemove = null;
            document.onmouseup = null;
          };
        };
      }